package business

import (
	"ruoyi-go/app/admin/model/tools"
	"ruoyi-go/pkg/mysql"
	"ruoyi-go/utils/R"
)

// Model c5_site_info  站点信息表
type C5SiteInfo struct {
	Id              int64  `json:"id" gorm:"primaryKey;column:id"`           //主键ID
	CompanyName     string `json:"companyName" gorm:"company_name"`          //公司名称
	WorkAreaCode    string `json:"workAreaCode" gorm:"work_area_code"`       //工区编码
	WorkAreaName    string `json:"workAreaName" gorm:"work_area_name"`       //工区名称
	SiteCode        string `json:"siteCode" gorm:"site_code"`                //站点编码
	SiteName        string `json:"siteName" gorm:"site_name"`                //站点名称
	SiteInfoBackup1 string `json:"siteInfoBackup1" gorm:"site_info_backup1"` //备用字段1
	SiteInfoBackup2 string `json:"siteInfoBackup2" gorm:"site_info_backup2"` //备用字段2
	SiteInfoBackup3 string `json:"siteInfoBackup3" gorm:"site_info_backup3"` //备用字段3
	SiteInfoBackup4 string `json:"siteInfoBackup4" gorm:"site_info_backup4"` //备用字段4
	SiteInfoBackup5 string `json:"siteInfoBackup5" gorm:"site_info_backup5"` //备用字段5
	CreateId        int64  `json:"createId" gorm:"create_id"`                //创建者ID
	CreateName      string `json:"createName" gorm:"create_name"`            //创建者姓名
	CreateTime      string `json:"createTime" gorm:"create_time"`            //创建时间
	UpdateId        int64  `json:"updateId" gorm:"update_id"`                //更新者ID
	UpdateName      string `json:"updateName" gorm:"update_name"`            //更新者姓名
	UpdateTime      string `json:"updateTime" gorm:"update_time"`            //更新时间
	AccountId       string `json:"accountId" gorm:"account_id"`              //账户ID
}

func (C5SiteInfo) TableName() string {
	return "c5_site_info"
}

// 创建
func CreateC5SiteInfoService(data C5SiteInfo) R.Result {
	err := mysql.MysqlDb().Create(&data).Error
	if err != nil {
		return R.ReturnFailMsg("保存失败")
	}
	return R.ReturnSuccess(nil)
}

// 根据ID删除
func DeleteC5SiteInfoService(id string) R.Result {
	err := mysql.MysqlDb().Delete(&C5SiteInfo{}, "id = ?", id).Error
	if err != nil {
		return R.ReturnFailMsg("删除失败")
	}

	return R.ReturnSuccess(nil)
}

// 根据ID批量删除
func DeleteC5SiteInfoByIdsService(ids string) R.Result {
	if len(ids) == 0 {
		return R.ReturnFailMsg("参数获取失败")
	}

	err := mysql.MysqlDb().Delete(&C5SiteInfo{}, "id in ?", ids).Error
	if err != nil {
		return R.ReturnFailMsg("批量删除失败")
	}

	return R.ReturnSuccess(nil)
}

// 根据id 更新 ，排除零值
func UpdateC5SiteInfoService(data C5SiteInfo) R.Result {
	err := mysql.MysqlDb().Updates(&data).Error
	if err != nil {
		return R.ReturnFailMsg("更新失败")
	}
	return R.ReturnSuccess(nil)
}

// 根据id获取model
func GetC5SiteInfoService(id int64) R.Result {

	if id == 0 {
		return R.ReturnFailMsg("参数获取失败")
	}
	var data C5SiteInfo
	err := mysql.MysqlDb().Where("id = ?", id).First(&data).Error
	if err != nil {
		return R.ReturnFailMsg("获取数据失败")
	} else {
		return R.ReturnSuccess(data)
	}

}

// 获取所有的model
func GetListC5SiteInfoService() R.Result {
	var list []C5SiteInfo
	err := mysql.MysqlDb().Find(&list).Error
	if err != nil {
		return R.ReturnFailMsg("获取数据失败")
	} else {
		return R.ReturnSuccess(list)
	}
}

// 按条件分页查询 limit offset ,参数用指针&, 数据会自动填充到req对象
func GetPageLimitC5SiteInfoService(params tools.SearchTableDataParam) tools.TableDataInfo {

	var pageNum = params.PageNum
	var pageSize = params.PageSize

	var total int64
	db := mysql.MysqlDb().Model(C5SiteInfo{})
	// 可以自定义搜索方式

	var rows []C5SiteInfo

	if err := db.Count(&total).Error; err != nil {
		return tools.Fail()
	}
	offset := (pageNum - 1) * pageSize
	db.Order("id DESC").Offset(offset).Limit(pageSize).Find(&rows)
	if rows == nil {
		return tools.Fail()
	} else {
		return tools.Success(rows, total)
	}
}
